package persistence.demoproxy;

import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import javassist.util.proxy.MethodHandler;

/**
 * Intercepte les appels aux méthodes get d'une classe persistante<br/>
 * Pour le lazzy loading des propriétés OneToMany et ManyToOne
 * 
 * @author dga
 * 
 */
public class PersistentClassHandler implements MethodHandler {
  private static Log log = LogFactory.getLog(PersistentClassHandler.class);

  /* on peut ajouter en arguments des objets dont aurait besoin le proxy (la classe,, la session, ...) */
    public PersistentClassHandler() {
  }

  public Object invoke(Object bean, Method method, Method proceed, Object[] args) throws Throwable {
    String methodName = method.getName();
    log.debug("Invoking " + methodName);
    /* Faire qqchose */
    return proceed.invoke(bean, args); // execute the original method.
  }

}
